package ${package}.service;

import org.slim3.datastore.Datastore;
import org.slim3.datastore.EntityNotFoundRuntimeException;

import com.google.appengine.api.datastore.Key;
import ${package}.model.Setting;

/**
 * {@link Setting}を操作するためのユーティリティ。
 * @author shin1ogawa
 */
public class SettingService {

	private SettingService() {
	}

	/**
	 * 設定値を取得する。
	 * @param settingKey
	 * @return {@code settingKey}に対応する設定値。対応する設定が存在しない場合は{@code null}.
	 */
	public static String get(String settingKey) {
		Key key = Datastore.createKey(Setting.class, settingKey);
		try {
			Setting setting = Datastore.get(Setting.class, key);
			return setting.getSettingValue();
		} catch (EntityNotFoundRuntimeException e) {
			return null;
		}
	}

	/**
	 * 設定値を保存する。
	 * @param settingKey
	 * @param settingValue
	 * @return 保存した{@link Setting}の主キー
	 */
	public static Key set(String settingKey, String settingValue) {
		Key key = Datastore.createKey(Setting.class, settingKey);
		Setting setting = new Setting();
		setting.setKey(key);
		setting.setSettingValue(settingValue);
		return Datastore.put(setting);
	}
}
